/**
 * Copyright 2019 [shujiang.yang], Inc. All rights reserved.
 * Email: 314938230@qq.com
**/
package awd.bj.jls.webs.controller;

import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;

import awd.bj.jls.model.CrjdjModel;
import awd.bj.jls.webs.api.JlsServersApi;
import awd.bj.jls.webs.api.model.User;
import awd.bj.jls.webs.utils.PagerResult;
import awd.bj.jls.webs.utils.QueryParam;
import awd.bj.jls.webs.utils.ResponseMessage;
import awd.bj.jls.webs.utils.Result;
import awd.bj.jls.webs.utils.ResultUtils;

@Controller
@RequestMapping("/crjdj")
@RefreshScope
public class CrjdjAction extends BaseAction {

	@Autowired
	private JlsServersApi jlsServersApi;

	@RequestMapping({ "/crjdj.html" // 首页
			, "/crjdj_enter.html" // 单表录入页面
			, "/crjdj_jbxx_enter.html" // 人员信息查询页面
			, "/crjdj_jbxx_hj_enter.html" // 人员信息查询页面
			, "/crjdj_query.html" // 信息查询
			, "/crjdj_jbxx_query.html" // 关联基本信息查询
			, "/6.html" //
			, "/7.html" })
	public String index(Model model, HttpServletRequest request) {
		model.addAllAttributes(getBaseModelData());
		return getRenderFilePath(request);
	}

	/**
	 * @GetMapping("/crjdj") public ResponseMessage<PagerResult<CrjdjModel>>
	 * crjdjQueryForPage(@RequestBody QueryParam param); @PostMapping("/crjdj")
	 * public ResponseMessage<String> crjdjSave(@RequestBody CrjdjModel
	 * crjdjModel); @PutMapping("/crjdj/{id}") public String
	 * crjdjUpdate(@RequestParam(value="id") String id ,@RequestBody CrjdjModel
	 * crjdjModel);
	 */

	/**
	 * 数据列表,关联基本信息
	 * 
	 * @param request
	 * @param params  所有请求的参数集合
	 * @return
	 */
	@RequestMapping("/list2jbxx")
	@ResponseBody
	public Map<String, Object> list2jbxx(HttpServletRequest request, Map<String, Object> params) {
		QueryParam param = getBaseQueryParam(request, params);
		System.err.println("=======================list2jbxx=========================");
		System.err.println("======================查询数据======================");
		System.err.println(JSON.toJSONString(param));
		System.err.println("===========================list2jbxx===========================");
		ResponseMessage<PagerResult<CrjdjModel>> list = jlsServersApi.crjdjQueryForPage(param);
		Map<String, Object> result = Maps.newHashMap();
		result.put("total", list.getResult().getTotal());
		result.put("rows", list.getResult().getData());

		return result;
	}

	/**
	 * 数据列表
	 * 
	 * @param request
	 * @param params  所有请求的参数集合
	 * @return
	 */
	@RequestMapping("/list")
	@ResponseBody
	public Map<String, Object> list(HttpServletRequest request, Map<String, Object> params) {
		QueryParam param = getBaseQueryParam(request, params);
		System.err.println("=======================list=========================");
		System.err.println("======================查询数据======================");
		System.err.println(JSON.toJSONString(param));
		System.err.println("===========================list===========================");
		ResponseMessage<PagerResult<CrjdjModel>> list = jlsServersApi.crjdjQueryForPage(param);
		Map<String, Object> result = Maps.newHashMap();
		result.put("total", list.getResult().getTotal());
		result.put("rows", list.getResult().getData());
		return result;
	}

	/**
	 * 数据保存操作
	 * 
	 * @param model
	 * @return
	 */
	@RequestMapping("/save")
	@ResponseBody
	public Result<?> save(@ModelAttribute CrjdjModel model) {
		User users = getCurrentUser();
		try {

			model.setState("R2");
			model.setJsbh(users.getJsbh());
			model.setCreatetime(new Date());
			model.setCreator(users.getUsername());

			System.err.println("=======================save=========================");
			System.err.println("=======================出入拘留区登记===================");
			System.err.println(JSON.toJSONString(model));
			System.err.println("===========================save===========================");

			return ResultUtils.success(jlsServersApi.crjdjSave(model));

		} catch (Exception e) {
			e.printStackTrace();
			return ResultUtils.error(Result.ERR_SAVE, "保存失败");
		}
	}

	/**
	 * 数据更新
	 * 
	 * @param model
	 * @return
	 */
	@RequestMapping("/update")
	@ResponseBody
	public Result<?> update(@ModelAttribute CrjdjModel model) {
		User users = getCurrentUser();
		try {
			model.setUpdator(users.getUsername());
			model.setUpdatetime(new Date());
			return ResultUtils.success(jlsServersApi.crjdjUpdate(model.getId(), model));
		} catch (Exception e) {
			e.printStackTrace();
			return ResultUtils.error(Result.ERR_SAVE, "保存失败");
		}
	}

	/**
	 * 删除操作
	 * 
	 * @param model
	 * @return
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public Result<?> delete(@ModelAttribute CrjdjModel model) {
		User users = getCurrentUser();
		try {
			model.setState("R3");
			model.setUpdator(users.getUsername());
			model.setUpdatetime(new Date());
			return ResultUtils.success(jlsServersApi.crjdjUpdate(model.getId(), model));
		} catch (Exception e) {
			e.printStackTrace();
			return ResultUtils.error(Result.ERR_SAVE, "删除失败");
		}
	}

}